<?php
function mauth_util_session_start()
{	// Инициализируем сессию, если не было
	if(!isset($_SESSION))
	{
		session_start();
	}
}

function mauth_util_ifsession_start()
{	// Инициализируем сессию, если сессия ранее была запущена для пользователя
	if(isset($_REQUEST[session_name()]))
	{
		mauth_util_session_start();
		return true;
	}
	return false;
}

function mauth_util_implwhole($login,$host)
{
	return "{$login}@{$host}";
}
function mauth_util_explwhole($wholelogin)
{
	//
	$arg = explode("@", $wholelogin);
	return array('login'=>$arg[0],'host'=>$arg[1]);
}

/**
 * Приведение логина к необходимому виду, в котором он хранится в базе данных
 *
 * @param string $wholelogin - исходный логин@домен
 * @param string $localhost - обозначение локального хоста
 * @param string $realhost - реальный хост сайта
 * @param string $hostreduct - тип преобразования (all2local,all2real,real2local,local2real,no)
 * @param string $hostonly - только логины в указаном хосте
 * @param string $hostempty - хост, для которого возвращается логин без домена
 * @return string
 */
function mauth_util_loginreduct($wholelogin,$localhost='localhost',$realhost='localhost',$hostreduct='real2local',$hostonly=null,$hostempty=null)
{
    // Разбиваем логин в массив
	if (strpos($wholelogin,'@')===false)
	{
		// Нам передали логин без домена
		$arrlogin=array('login'=>$wholelogin,'host'=>$localhost);
	}else
	{
        $arrlogin = mauth_util_explwhole($wholelogin);
	}
    // Выполняем приведение логинов
	switch($hostreduct)
	{
	    case 'all2local':
	        $arrlogin['host'] = $localhost;
	    break;
	    case 'all2real':
		    $arrlogin['host'] = $realhost;
	    break;
	    case 'real2local':
	        if ($arrlogin['host']===$realhost)
	        {
	            $arrlogin['host'] = $localhost;
	        }
	    break;
	    case 'local2real':
		    if ($arrlogin['host']===$localhost)
	        {
	            $arrlogin['host'] = $realhost;
	        }
	    break;
	    case 'no':
	    default:
            // Нет преобразования
	    break;
	}
	if (!empty($hostonly) AND $arrlogin['host'] !== $hostonly)
	{
	    return false;
	}
	// Локальный хост без домена
	if (!empty($hostempty) AND $arrlogin['host'] === $hostempty)
	{
	    return $arrlogin['login'];
	}else
	{
	    // Соединяем логин обратно
	    return mauth_util_implwhole($arrlogin['login'],$arrlogin['host']);    
	}
}
function mauth_util_onlylogin($wholelogin)
{
    if (strpos($wholelogin,'@')===false)
	{
		// Нам передали логин без домена
	    return $wholelogin;
	}
    $implogin = mauth_util_explwhole($wholelogin);
	if ($implogin['host']==mst_getcfgmod('mauth','hostname'))
	{
	    // Нам передали логин в локальном домене - возвращаем его
		return $implogin['login'];
	}
	// Это не локальный логин
	return false;
}

?>